package 力扣.动态规划;
//给你一根长度为 n 的绳子，请把绳子剪成整数长度的 m 段（m、n都是整数，n>1并且m>1），
// 每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少？
// 例如，当绳子的长度是8时，我们把它剪成长度分别为2、3、3的三段，此时得到的最大乘积是18。


public class 剪绳子1 {
    public static void main(String[] args) {
        int i = cuttingRope(10);
        System.out.println(i);
    }
    public static int cuttingRope(int n) {
        int[] dp = new int[n + 1];
        //初始化
        dp[0]=dp[1]=0;
        for (int i = 2; i <n+1 ; i++) {
            for (int j = 1; j <i; j++) {
                dp[i]=Math.max(dp[i],Math.max(j*(i-j),j*dp[i-j]));
            }
        }
        return dp[n];
    }
}
